Computer systems for generating structured query language ("SQL") instructions are known and have been generally available on the market. These systems commonly provide as output a series of SQL instructions that reflect a user's query of information stored within a relational database. The SQL instructions, therefore, are generated in a format sufficient for direct communication and input to the computer containing the relational database.
Examples of several SQL generator programs presently available on the market include: Metaphor/DIS, sold by International Business Machine Corporation; Quest, sold by Gupta, Inc.; and Access, sold by Microsoft Corporation. Although each of the packages available on the market has its own particularities, the approach used in Metaphor for generating a series of SQL statements is typical of most SQL generators.
The Metaphor program requires the user/developer to explicitly define the search query, including table selection, followed by column selection. As those skilled in the art will appreciate, it is the step of table selection where Metaphor, as well as the other currently available programs, becomes rigid and difficult to use. For example, columns cannot be selected with these programs until a table has been selected. Further, the number and similarity of tables can make selection difficult even for the most experienced user. For a predefined application, therefore, all possible queries must be specifically defined in advance, no matter how similar the query.
Programs like Metaphor require that each permutation of a query be defined prior to use of the relational database. Later, when a small change may be required to a previously run query, the small change must be performed separately to each permutation of the query. Consequently, maintenance and upkeep of preexisting queries using the known and available programs often requires more skill and time than the original development of the queries.
The SQL generators generally available on the market also suffer from another problem. Because queries are hard-wired upon creation, for each new query a programmer or administrator must be employed to translate the query or write a program to protect the user from the query. Thus, for a typical user such as a business executive, there is no simple and efficient mechanism to generate and supply a query to the database. Because of the complexity of the table selection process and the level of technical knowledge required by the programmer or administrator, the lay user is simply too far removed from communicating directly with the database. As a result, the time from when a lay user generates a new query of a relational database until the time the user receives a response to the query can be substantial. This time delay is due in large part to the overhead costs of preparing and selecting by hand the new tables that must be communicated to the database to reflect the user's query.
What is lacking, is a system that allows a lay user to readily input new queries for communication to the relational database promptly and with minimal knowledge of the database or its programming. A system that would allow a lay user to simply provide input variables reflective of the user's query for communication to the database would make access to the database quicker and less cumbersome. Such a system would automatically select the tables necessary to reflect the user's new query, and based on that selection automatically generate the SQL instructions necessary to communicate the query to the relational database. In the process of automatically selecting such tables, the system would generate the necessary "Joins" to link up the input variable(s) supplied by the user to reflect their relation within the database.